
#ifndef GestureSample_h
#define GestureSample_h

#include <CSharpPropertyMethods.h>

#include <System/TimeSpan.h>

#include <Riccsson/Xna/Framework/Vector2.h>
#include <Riccsson/Xna/Framework/Input/Touch/GestureType.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Input
			{
				namespace Touch
				{
					// Summary:
					//     A representation of data from a multitouch gesture over a span of time.
					struct GestureSample
					{
						
						PROP3GET(GestureSample, Vector2, Delta)
						PROP3GET(GestureSample, Vector2, Delta2)
						PROP3GET(GestureSample, GestureType, gestureType)
						PROP3GET(GestureSample, Vector2, Position)
						PROP3GET(GestureSample, Vector2, Position2)
						PROP3GET(GestureSample, Riccsson::System::TimeSpan, timestamp)
						
						COPY_CONSTRUCTOR(GestureSample)
						{
							PROP3GET_INIT_COPY(GestureSample, Vector2, Delta);
							PROP3GET_INIT_COPY(GestureSample, Vector2, Delta2);
							PROP3GET_INIT_COPY(GestureSample, GestureType, gestureType);
							PROP3GET_INIT_COPY(GestureSample, Vector2, Position);
							PROP3GET_INIT_COPY(GestureSample, Vector2, Position2);
							PROP3GET_INIT_COPY(GestureSample, Riccsson::System::TimeSpan, timestamp);
						}

						public: GestureSample(GestureType gestureType, Riccsson::System::TimeSpan timestamp, Vector2 position, Vector2 position2, Vector2 delta, Vector2 delta2)
							: PROP3GET_INIT(GestureSample, Delta)
							, PROP3GET_INIT(GestureSample, Delta2)
							, PROP3GET_INIT(GestureSample, gestureType)
							, PROP3GET_INIT(GestureSample, Position)
							, PROP3GET_INIT(GestureSample, Position2)
							, PROP3GET_INIT(GestureSample, timestamp)
						{
							throw;
						}

						// Summary:
						//     Holds delta information about the first touchpoint in a multitouch gesture.
						public: PROP3_GET(Vector2, Delta)
						{
							throw;
						}

						//
						// Summary:
						//     Holds delta information about the second touchpoint in a multitouch gesture.
						public: PROP3_GET(Vector2, Delta2)
						{
							throw;
						}

						//
						// Summary:
						//     The type of gesture in a multitouch gesture sample.
						public: PROP3_GET(GestureType, gestureType)
						{
							throw;
						}

						//
						// Summary:
						//     Holds the current position of the first touchpoint in this gesture sample.
						public: PROP3_GET(Vector2, Position)
						{
							throw;
						}

						//
						// Summary:
						//     Holds the current position of the the second touchpoint in this gesture sample.
						public: PROP3_GET(Vector2, Position2)
						{
							throw;
						}

						//
						// Summary:
						//     Holds the starting time for this touch gesture sample.
						public: PROP3_GET(Riccsson::System::TimeSpan, timestamp)
						{
							throw;
						}

					};
				}
			}
		}
	}
}

#endif